package com.mexcad.db.utils;

import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;

import javax.activation.DataSource;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mexcad.db.connectors.SolicitudConnector;
import com.mexcad.db.dto.Solicitud;
import com.mexcad.utils.Constantes;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;

import org.hibernate.Session;

public class ArchivoContrato {

	
	private Session session;
	public static Connection con;

	public String getContratoById(String contratoSolicitud, int id) {
		this.session = HibernateUtil.getSessionFactory().openSession();
		//FileDataSource
		
		con = this.session.connection();
		Solicitud sol = SolicitudConnector.getSolicitudPorId(id);
		
		String pathReport = Constantes.RUTA_PROYECTO;
		String sNomRep = null;

		if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_1){
			sNomRep=Constantes.CONTRATO_1;
		}else if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_2){
			sNomRep=Constantes.CONTRATO_2;
		}else if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_3){
			sNomRep=Constantes.CONTRATO_3;
		}else if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_4){
			sNomRep=Constantes.CONTRATO_4;
		}
			
		// Parametros
		Map<String,Object> parametros = new HashMap<String, Object>();

		// Nombre del Reporte
		
	//	parametros.put("idCliente", Integer.parseInt(req.getParameter("idCliente")));
		parametros.put("parPath", Constantes.RUTA_CONTRATOS);
		
		parametros.put("numsolicitud",new Integer(id));
	
		
	
		
			// Ruta y nombre de archivo
					
		
			// se crea el reporte
			JasperPrint imprime;
			try {
				imprime = JasperFillManager.fillReport(Constantes.RUTA_JASPER+sNomRep+".jasper", parametros, con);
				
				OutputStream os=null;
				// graba el pdf en disco
				JasperManager.printReportToPdfFile(imprime, Constantes.RUTA_CONTRATOS+sNomRep+id+".pdf");
		//		JasperExportManager.exportReportToPdfStream(imprime, os);
				JasperExportManager.exportReportToPdfFile(imprime, Constantes.RUTA_CONTRATOS+ sNomRep+id+".pdf");
				
				// Redireciona al pdf creado
				//res.sendRedirect("reports/" + sNomRep + ".pdf");
			
			} catch (JRException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		return sNomRep;
		
	}
	public static void main(String []args){
		ArchivoContrato r = new ArchivoContrato();
		r.getContratoById("contratoSolicitud",1);
		
	}
	
	
}
